# Soft Keywords

Мягкий модификатор (_soft modifier_) — это один из идентификаторов `infix`, `inline`, `opaque`, `open` и `transparent`.

Мягкое ключевое слово (_soft keyword_) — это мягкий модификатор или 
один из `as`, `derives`, `end`, `extension`, `throws`, `using`, `|`, `+`, `-`, `*`.

Мягкий модификатор рассматривается как потенциальный модификатор определения, 
если за ним следует жесткий модификатор или комбинация ключевых слов, начинающаяся с определения 
(`def`, `val`, `var`, `type`, `given`, `class`, `trait`, `object`, `enum`, `case class`, `case object`). 
Между двумя словами может быть последовательность токенов новой строки и мягких модификаторов.

В противном случае мягкие ключевые слова обрабатываются особым образом в следующих ситуациях:

- `inline`, если за ним следует любой токен, который может начать выражение.
- `derives`, если оно появляется после предложения расширения или после имени 
и, возможно, параметров класса, trait, объекта или enum.
- `end`, если он появляется в начале строки, следующей за оператором (т.е. определением или выражением верхнего уровня).
- `extension`, если оно появляется в начале инструкции и сопровождается `(` или `[`.
- `using`, если он появляется в начале списка параметров или аргументов.
- `as`, в предложении переименования импорта.
- `|`, если он разделяет два шаблона в альтернативе.
- `+`, `-`, если они появляются перед параметром типа.
- `*`, в импорте с подстановочными знаками, или он следует за типом параметра, 
или если он появляется в соединении vararg `x*`.

В других местах мягкое ключевое слово рассматривается как обычный идентификатор.


---

**Ссылки:**

- [Scala 3 Reference](https://docs.scala-lang.org/scala3/reference/soft-modifier.html)
